package com.cy.pj.goods.service;


import com.cy.pj.goods.dao.GoodsDao;
import com.cy.pj.goods.pojo.Goods;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Slf4j
@Service//业务类交给Sping管理,业务类里把接口的方法重写下
public class GoodsServiceImpl implements GoodsService{//这个类实现GoodsServic接口
    //is a(在这种关系中父类或接口定义规范或共性)
    //private static final Logger log= LoggerFactory.getLogger(GoodsServiceImpl.class);//记录查询时间,定义日志对象
    @Autowired
    private GoodsDao goodsDao;//service实现类耦合于GoodsDao//has a(一个好汉三个帮-强调的是协调例如：陆海空，公检法)

    @Override
    public int updateGoods(Goods entity) {//对于update操作，参数entity中需要有一个id值
        return goodsDao.updateGoods(entity);
    }

    @Override
    public Goods findById(Integer id) {
        return goodsDao.findById(id);//将来还可以将查询到的结果在业务逻辑层存储到cache
    }

    @Override
    public int saveGoods(Goods entity) {
        return goodsDao.insertGoods(entity);
    }

    public int deleById(Integer id){
        return goodsDao.deleteById(id);//后续还要在业务进行事务控制，日志记录，。。。
    }
    @Override//添加的接口类实现方法
    public List<Goods> findGoods() {
        long t1=System.currentTimeMillis();//输出方法在什么时候执行
        List<Goods> list=goodsDao.findGoods();//调用数据层的方法获取查询
        long t2=System.currentTimeMillis();
        log.info("findGoods time-> {}",t2-t1);
        return list;
    }
}
